<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>this</title>

    <script>
        // 在 浏览器 环境下，在全局作用域中使用 this 获取的就是 全局的对象
        console.log( this ); // 此时的 this 表示 window
        console.log( this.constructor.name ); // Window
        console.log( this === window );

        console.log( '- - - - - - - - - - - - - - - -' );

        function Chicken( name ) {
            // 在构造函数内部 this 表示当前实例
            this.name = name ;
            this.introduce = function(){
                console.log( this );
                console.log( '我是' , this.name  );
            }
        }

        // 在 c 所引用的实例内部可以使用 this 表示当前这只鸡
        let c = new Chicken( '战斗鸡' );
        // 默认情况下，在 introduce 内出现的 this 就表示当前这只鸡
        // 所谓当前这只鸡就是 introduce() 之前的 . 前的变量所引用实例
        c.introduce(); // 线程 调用 c 的 introduce 函数

    </script>

</head>
<body>
    
</body>
</html>